﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Spring.Context;
using Spring.Context.Support;
using AdminCondominio.Negocio;
using AdminCondominio.Dominio;

namespace AdminCondominio.Pruebas
{ 
    [TestFixture]
    public class TestUsuarioService
    {
        private IApplicationContext Spring;
        UsuarioService usuarioService;
        [TestFixtureSetUp]
        public void InicializarPruebas() 
        {
            Spring = new XmlApplicationContext(
               "assembly://AdminCondominio/AdminCondominio/capaNegocio.xml",
                "assembly://AdminCondominio/AdminCondominio/capaPersistencia.xml"
                );
            usuarioService = (UsuarioService)Spring.GetObject("usuarioService");
            Assert.NotNull(usuarioService);
        }
        [Test]
        public void TestCrearUsuario() 
        {
           
            Usuario usuario = null;
            Assert.DoesNotThrow(delegate
            {
              //  usuario=usuarioService.CrearUsuario("Alex", "Admin", "alex@gmail.com", "12345");
            });
            Assert.NotNull(usuario);
          
        }
        [Test]
        public void TestIntentarCrearUsuarioConCorreoRepetido()
        {

          
            Assert.Catch<Exception>(delegate
            {
              // usuarioService.CrearUsuario("Luis", "Admin", "alex@gmail.com", "123");
            });
          

        }
        [Test]
        public void TestModificarUsuario()
        {
       
          Usuario usuario = null;
          Usuario usuarioAModificar = usuarioService.ObtenerUsuario("alex@gmail.com");
          Assert.NotNull(usuarioAModificar);
          Assert.DoesNotThrow(delegate 
          {
           //   usuario = usuarioService.ModificarUsuario("Admin","alex@gmail.com","1234"); 
          });
        }

        [Test]
        public void TestListarUsuarios()
        {
          
            String nousuario = "";
            ICollection<Usuario> usuario= null;
            Assert.DoesNotThrow(delegate
            {
                usuario = usuarioService.ListarUsuarios(nousuario);
            });
            Assert.NotNull(usuario);

        }

    }
}